package com.javaGather.demo2;

public class Test1 {
    public static void main(String[] args) {
        String s1 = "Java";
        String s2 = "C++";

        /**
         * equals:属于Object父类中，默认比较两个对象的内存地址是否相同
         * String类重写了父类中的equals方法，实现比较两个字符串是否相等
         * 重写equals方法，必须要重写hashCode方法
         * hashCode生成：内存地址转化为整数类型
         * 1.如果equals比较两个对象值相等，则hashCode相等
         * 2.如果hashCode相等，不代表equals比较两个对象值相等
         */
        System.out.println(s1.equals(s2));
        System.out.println("Java:" + s1.hashCode());
        System.out.println("C++:" + s2.hashCode());

        Student jack = new Student("Jack", 12);
        Student Tom = new Student("Jack", 12);
        System.out.println(jack.equals(Tom));
        System.out.println("-------------------------");


        /**
         * * hashCode生成：内存地址转化为整数类型
         * 1.如果equals比较两个对象值相等，则hashCode相等
         * 2.如果hashCode相等，不代表equals比较两个对象值相等 ------哈希冲突问题
         */
        String strA = "a";
        Integer int97 = 97;
        System.out.println(strA.hashCode());
        System.out.println(int97.hashCode());

    }
}
